package Ex01;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;

public class Operate {
    private ArrayList<Book> books = new ArrayList<>();
    private Book globalBook = new Book();
    //定义一个扫描器对象
    Scanner sc = new Scanner(System.in);
    //设计用户注册功能
    public void add(){
        Book b = new Book();
        System.out.println("欢迎使用用户注册功能");
        //遍历这个容器，判断这个用户名是否存在
        System.out.println("请输入用户名");
        String name = sc.next();
        for (int i = 0; i < books.size(); i++) {
            if (books.get(i).getName().equals(name)){
                System.out.println("该用户名已经存在了~~不能重复注册");
            }
        }
        b.setName(name);
        System.out.println("用户名添加成功");
        System.out.println("请输入该用户名对应的密码");
        String pwd = sc.next();
        b.setPwd(pwd);
        books.add(b);
        System.out.println("用户注册成功~~~~");
    }
    //设计用户注册功能
    public void login(){
        System.out.println("欢迎使用用户登录功能");
        int code = books.size();
        if (code == 0){
            System.out.println("系统中不存在用户，请先去注册~~~");
        }else {
            while (true) {
                System.out.println("请输入用户名");
                String name = sc.next();
                System.out.println("请输入密码");
                String pwd = sc.next();
                //先判断这个用户是否存在于系统中
                Book user = justName(name);
                if (user != null){
                    //用户存在,然后判断用户名密码是否正确
                    if (user.getName().equals(name) && user.getPwd().equals(pwd)){
                        System.out.println("恭喜您："+user.getName()+"登陆成功");
                        System.out.println("您的账户信息如下：");
                        System.out.println("姓名："+user.getName());
                        System.out.println("密码："+user.getPwd());
                        System.out.println("==========================");
                        break;
                    }else {
                        System.out.println("用户名或密码错误，请核验~~");
                    }
                }else {
                    System.out.println("用户不存在请核验~~~");
                }
            }
        }
    }
    //设计一个方法，用来判断用户是否存在于系统中,如果存在则返回1，不存在则返回0
    public Book justName(String name){
        for (int i = 0; i < books.size(); i++) {
            Book justb = books.get(i);
            if (justb.getName().equals(name)){
                //表示用户已经存在了
                return justb;
            }
        }
        //用户不存在
        return null;
    }
    //设计一个查看特定用户信息功能
    public void show(){
        while (true) {
            if (books.size() == 0){
                System.out.println("当前系统不存在用户，请去注册吧~~~");
                break;
            }else {
                System.out.println("欢迎使用信息查看功能");
                System.out.println("请输入要查看的用户");
                String name = sc.next();
                Book book = justName(name);
                if (book != null){
                    System.out.println(book.getName()+"====当前信息如下：====");
                    System.out.println("姓名："+book.getName());
                    System.out.println("密码："+book.getPwd());
                    break;
                }else {
                    System.out.println("用户名输入错误，请核验~~");
                }
            }
        }
    }
    //设计一个查看所有用户信息方法
    public void showall(){
        if (books.size() == 0) {
            System.out.println("当前系统不存在用户，请去注册吧~~~");
        }else {
            System.out.println("====当前系统所有用户信息如下：====");
            for (int i = 0; i < books.size(); i++) {
                System.out.println("姓名："+books.get(i).getName());
                System.out.println("密码："+books.get(i).getPwd());
            }
        }
    }
    //设计删除用户方法
    public void del(){
        System.out.println("欢迎使用用户删除功能：");
        if (books.size() == 0) {
            System.out.println("当前系统不存在用户，请去注册吧~~~");
        }else {
            while (true) {
                System.out.println("请输入要删除的用户：");
                String name = sc.next();
                Book book = justName(name);
                if (book != null){
                    System.out.println("您确定要删除用户吗：（请输入Y/N）");
                    String code = sc.next();
                    if (code.equals("Y")){
                        books.remove(book);
                        System.out.println("用户删除成功");
                        break;
                    }
                }else {
                    System.out.println("用户不存在或输入错误，请核验~~~");
                }
            }
        }
    }
    //设计删除所有用户方法
    public void delall(){
        if (books.size() == 0) {
            System.out.println("当前系统不存在用户，请去注册吧~~~");
        }else {
            System.out.println("即将删除所有用户~~");
            for (int i = 0; i < books.size(); i++) {
                books.remove(i);
            }
            System.out.println("删除成功");
        }
    }
    //设计开始界面
    public void start(){
        while (true) {
            System.out.println("====欢迎进入图书管理系统====");
            System.out.println("1、用户登录");
            System.out.println("2、用户注册");
            System.out.println("3、用户查看");
            System.out.println("4、查看所有");
            System.out.println("5、删除账户");
            System.out.println("6、清空账户");
            System.out.println("0、退出系统");
            System.out.println("======================");
            System.out.println("请输入您要操作的功能");
            Scanner sc = new Scanner(System.in);
            int option = sc.nextInt();
            switch (option){
                //用户登录
                case 1:
                    login();
                    break;
                    //用户注册
                case 2:
                    add();
                    break;
                    //指定的用户查看
                case 3:
                    show();
                    break;
                    //查看所有用户信息
                case 4:
                    showall();
                    break;
                case 5:
                    del();
                    break;
                    //清空所有用户
                case 6:
                    delall();
                    break;
                    //退出系统
                case 0:
                    System.out.println("欢迎下次使用~~~");
                    return;
                default:
                    System.out.println("您输入的命令有误，请重新输入~~~" );
                    break;
            }
        }
    }
}
